
#ifndef ELEMENTO_H_
#define ELEMENTO_H_

using namespace std;

#include "../defines.h"
#include "../IncludesServidor.h"

class Elemento {
protected:
    short int id;
    int idImagen;
    int posX;
    int posY;
    int alto;
    int ancho;
    unsigned char 	   tipo;
    bool vivo;

    //Constructor protected. Lo llaman las subclases
    Elemento(short int id,int idImagen, int posX, int posY, int alto, int ancho, unsigned char tipo, bool vivo);
	//Destructor
	~Elemento();

public:
    //Getters
    short int getId();
    int getPosX();
    int getPosY();
    int getAncho();
    int getAlto();
    unsigned char getTipo();
    bool isVivo();
    int getIdImagen();

    //Setters
    void setIdImagen(int idImage);
    void setVivo(bool vivo);
    void setPosX(int posX);
    void setPosY(int posY);

    //Metodos comunes a todas las entidades
    void moverse(int offsetX, int offsetY);

    //Validaciones para realizar un movimiento.
    bool puedoMovermeHorizontalmente(int cant);
    bool puedoMovermeVerticalmente(int cant);
};

#endif /* ELEMENTO_H_ */
